import { _decorator, Component, director, math, Node, profiler, ProgressBar, Slider } from 'cc';
import { loadRes } from './res/loadRes';
import { Bundle, resPath } from './data/enmus';
const { ccclass, property } = _decorator;

@ccclass('loadView')
export class loadView extends Component {
    // 进度条
    @property(ProgressBar)
    progress: ProgressBar
    // 滑动器
    @property(Slider)
    sli: Slider
    // 是否已经加载完成
    private isLoad: boolean = false
    start() {
        // 隐藏性能分析工具的统计信息，通常用于生产环境以提高性能。
        profiler.hideStats();
        this.progress.progress = 0
        this.init()
    }
    // 初始化
    init() {
        // 开启进度条更新的调度, 每0.3秒更新一次
        this.schedule(this.loadProgress, 0.3)
        // 加载资源
        this.loadRes()
    }
    /**
       * 更新加载进度条
       * 该方法会随机增加进度条的进度，并在资源加载完成后加载主场景
       */
    loadProgress() {
        // 随机增加进度条的进度,cocos封装的方法
        let suijiJIndu = math.randomRange(0.1, 0.3)
        let nowJindu = this.progress.progress + suijiJIndu
        // 返回 nowJindu 和 0.9 中较小的那个值,如果nowJindu超过0.9，那就一直返回0.9
        this.progress.progress = Math.min(nowJindu, 0.9)
        this.sli.progress = Math.min(nowJindu, 0.9)
        // 如果资源已经加载完成
        if (this.isLoad) {
            // 将进度条的进度设置为1.0
            this.progress.progress = 1
            this.sli.progress = 1
            // 取消进度条更新的调度
            this.unschedule(this.loadProgress)
            // 在0.1秒后加载主场景
            this.scheduleOnce(() => {
                director.loadScene('home')
            }, 0.1)
        }
    }
    /**
       * 加载多个资源目录
       * 该方法会依次加载资源、图标、字体、音频、UI 和游戏资源目录
       * 当所有资源加载完成后，设置 loaded 标志为 true
       */
    async loadRes() {
        // 加载图片目录
        await loadRes.ins.loadRes(Bundle.prefabs, resPath.prefabs)
        // 加载预制体目录
        await loadRes.ins.loadRes(Bundle.json, resPath.json)
        // 加载音乐目录
        await loadRes.ins.loadRes(Bundle.audio, resPath.audio)
        // 资源加载完成
        this.isLoad = true
    }

}


